home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 2 / Amiga Tools 2.iso / tex / macros / source / contrib / supported / xypic / src / xypoly.doc / node1_mn.html < prev    next >
Text File  |  1995-03-15  |  8KB  |  278 lines

  1.  
  2. <H4><A ID="SECTION00000010000000000000">
  3. Header:</A>
  4. </H4>
  5.  
  6.  
  7. <P>
  8. Some of the effects use || so make sure the `arrow' feature is loaded.
  9. (
  10. <#8#>arrow<#8#>
  11.  
  12.  
  13. )
  14.  
  15. <P>
  16. (
  17.  
  18. )
  19.  
  20. <P>
  21.  
  22. <P><BR>
  23.  
  24. <P>
  25. A polygon is most easily specified using ...
  26. <BR>
  27. <tex2html_image_mark>#defs11#
  28. <BR>
  29.  
  30. Here ;SPMlt;number;SPMgt; is a sequence of digits, giving the number of sides.
  31. If used within an ||...|| environment then the polygon 
  32. will be centred on <I>c</I>, the current ;SPMlt;pos;SPMgt;. However an ||
  33. can be used outside such an environment, as ``stand-alone'' polygon;
  34. the whole picture must be specified within the || command.  
  35.  
  36. <P>
  37. In either case the shape is obtained by spacing vertices equally 
  38. around the ``unit circle'' with respect to the current basis. 
  39. If this basis is non-square then the vertices will lie on an ellipse.
  40. Normally the polygon, with at most 12 vertices, is oriented so as to
  41. have a flat base when specified using a standard square basis. 
  42. With more than 12~vertices the orientation is such that the line
  43. from the centre to the first vertex is horizontal, pointing to the right.
  44. Any other desired orientation can be obtained, with any number of vertices,
  45. by using the |~=<#16#>|...|<#16#>| as described below.
  46.  
  47. <P>
  48.  
  49. <P><BR>
  50. The general form for || is ...
  51. <BR>
  52. <tex2html_image_mark>#defs117#
  53. <BR>
  54. where the |;SPMquot;|;SPMlt;prefix;SPMgt;|;SPMquot;| and ;SPMlt;switches;SPMgt; are optional.
  55. Their uses will be described shortly.
  56.  
  57. <P>
  58.  
  59. <P><BR>
  60.  
  61. <P>
  62. A || establishes positions for the vertices of a polygon.
  63. At the same time various things may be typeset, 
  64. according to the  specified ;SPMlt;switches;SPMgt;.
  65. An ;SPMlt;object;SPMgt; may be dropped at each vertex, ``spokes'' drawn to the
  66. centre and successive vertices may be connected as the polygon's ``sides''.
  67. Labels and breaks can be specified along the spokes and sides.
  68.  
  69. <P>
  70. Each vertex is automatically named: 
  71. |;SPMquot;1;SPMquot;|, |;SPMquot;2;SPMquot;|, ..., |;SPMquot;|;SPMlt;number;SPMgt;|;SPMquot;| with |;SPMquot;0;SPMquot;| as centre.
  72. When a ;SPMlt;prefix;SPMgt; has been given, 
  73. names |;SPMquot;|;SPMlt;prefix;SPMgt;|0;SPMquot;|, ..., |;SPMquot;|;SPMlt;prefix;SPMgt;;SPMlt;number;SPMgt;|;SPMquot;| are used instead.
  74. While the polygon is being constructed the macro || expands to 
  75. the number of sides, while || expands to the number
  76. of each vertex, spoke and side at the time it is processed. 
  77. This occurs in the following order: 
  78. <#20#><I>vertex</I><#20#> 1, <#21#><I>spoke</I><#21#> 1, <#22#><I>vertex</I><#22#> 2, 
  79. <#23#><I>spoke</I><#23#> 2, <#24#><I>side</I><#24#> 1, <#25#><I>vertex</I><#25#> 3, 
  80. <#26#><I>spoke</I><#26#> 3, <#27#><I>side</I><#27#> 2, ..., <#28#><I>vertex</I><#28#> <I>n</I>, 
  81. <#29#><I>spoke</I><#29#> <I>n</I>, <#30#><I>side</I><#30#> <I>n</I> - 1, <#31#><I>side</I><#31#> <I>n</I>
  82. where the final side joins the last vertex to the first.
  83.  
  84. <P>
  85. The macro || holds the name of the polygon, 
  86. which is ;SPMlt;prefix;SPMgt; if supplied. In this case the value of 
  87. || is also stored as |||;SPMlt;prefix;SPMgt;|NUMSIDES|, 
  88. accessible outside the polygon.
  89.  
  90. <P>
  91. As stated above, a polygon with up to 12 vertices is oriented 
  92. so as to have a flat base, when drawn using a standard square basis. 
  93. Its vertices are numbered in anti-clockwise order, commencing with the one 
  94. at horizontal-right of centre, or the smallest angle above this
  95. (see example below). 
  96. With more than 12 vertices then vertex |;SPMquot;1;SPMquot;| is located on the horizontal, 
  97. extending to the right from centre (assuming a standard square basis).
  98. By providing a switch of the form |~=<#32#>|;SPMlt;angle;SPMgt;|<#32#>| then the vertex |;SPMquot;1;SPMquot;|
  99. will be located on the unit circle at ;SPMlt;angle;SPMgt;<SUP><TT>o</TT></SUP> anti-clockwise
  100. from ``horizontal'' --- more correctly, from the <I>X</I>-direction in the
  101. basis to be used when setting the polygon, which may be established
  102. using a  |~:<#33#>|...|<#33#>| switch.
  103.  
  104. <P>
  105. <BR>
  106. <tex2html_image_mark>#code34#
  107. <BR>
  108. <P><tex2html_verbatim_mark>#math363#</P><DIV ALIGN="CENTER">
  109. <tex2html_image_mark>#tex2html_wrap_indisplay1241#
  110. </DIV><P></P>
  111. <BR>
  112. <tex2html_image_mark>#exercise46#
  113. <BR>
  114.  
  115.  
  116. <P>
  117. One important use of ;SPMlt;prefix;SPMgt; is to allow the vertices of more than one 
  118. polygon to be accessed subsequently within the same picture. 
  119. Here are some examples of this, 
  120. incorporating the |~:<#49#>|...|<#49#>| switch to perform simple rescalings.
  121. Firstly the edges of a dodecahedron as a planar graph:
  122.  
  123. <P>
  124. <BR>
  125. <tex2html_image_mark>#code50#
  126. <BR>
  127. <P><tex2html_verbatim_mark>#math364#</P><DIV ALIGN="CENTER">
  128. <tex2html_image_mark>#tex2html_wrap_indisplay1243#
  129. </DIV><P></P>
  130.  
  131.  
  132. <P>
  133.  
  134. Next a hexagonal pyramid, a rectangular box
  135. and an octahedral crystal specified as a triangular anti-prism. 
  136. Notice how the |~:<#68#>|...|<#68#>| switch is used to create non-square bases, 
  137. allowing the illusion of 3D-perspective in the resulting diagrams:
  138.  
  139. <P>
  140. <BR>
  141. <tex2html_image_mark>#code69#
  142. <BR>
  143. <P><tex2html_verbatim_mark>#math365#</P><DIV ALIGN="CENTER">
  144. <tex2html_image_mark>#tex2html_wrap_indisplay1245#
  145. </DIV><P></P>
  146.  
  147.  
  148. <P>
  149. || simply reads the value of a counter called |@|.
  150. It is set initially at -1, to indicate no polygon yet. This is used to
  151. establish the default naming in case polygons are nested.
  152.  
  153. <P>
  154. (
  155. @<#82#>count<#82#>@@=@ne
  156. @<#83#>@<#83#>
  157.  
  158. <P>
  159. @@ <#84#><#84#>
  160. @<#85#>@ <#85#>
  161. )
  162.  
  163. <P>
  164. To allow recursion the values of |@ | and |@| are saved
  165. upon entering an ||, to be restored at the end.
  166.  
  167. <P>
  168. (
  169. @<#86#>@<#86#><tex2html_comment_mark>34
  170.  
  171. <P>
  172. @@<#823#><tex2html_comment_mark>35
  173.   @ 
  174.    
  175.    @<#806#>@@<#769#>@<#651#>@=@ne<#651#><#769#><#806#><tex2html_comment_mark>38
  176.  
  177.  
  178.   @ 
  179.    
  180.    @<#808#>@@<#771#>@<#653#>@=@ne <#653#><#771#><#808#><tex2html_comment_mark>41
  181.  
  182.  
  183.  @ @=@ @@n<#823#>
  184.  
  185. <P>
  186. @@ <#93#>TF<#93#><tex2html_comment_mark>42
  187. @@x<#654#>@@<#94#>@@<#94#><#654#>
  188. )
  189.  
  190. <P>
  191. Read the number of vertices by parsing digits.
  192.  
  193. <P>
  194. (
  195. @@n<#655#><tex2html_comment_mark>43
  196. @##1<#95#>@10@##1@@n<#95#><tex2html_comment_mark>44
  197.  @
  198.   @;SPMgt;@ @ @<#96#>@@i<#96#><tex2html_comment_mark>45
  199. @ @<#97#>@@n<#97#>
  200.  0123
  201.  4567
  202.  89
  203.  @ =@i @ <#655#>
  204.  
  205. <P>
  206. @@i<#656#>@@<#656#>
  207. )
  208.  
  209. <P>
  210. Next we check whether a prefix has been supplied for creating the vertex
  211. names. If so it is stored as |@|, which otherwise expands to
  212. empty. The number of sides is also stored using the prefix.
  213.  
  214. <P>
  215. (
  216. @@<#99#><#99#><tex2html_comment_mark>46
  217. @@@ <#100#><#100#><tex2html_comment_mark>47
  218. @<#101#>@<#101#><tex2html_comment_mark>48
  219.  
  220. <P>
  221. @@<#772#><tex2html_comment_mark>49
  222. ;SPMquot;@;SPMquot;##1;SPMquot;<#657#>
  223.   @@ <#657#><tex2html_comment_mark>51
  224.  
  225.   @;SPMlt;@
  226.    @<#106#>@@<#106#><tex2html_comment_mark>54
  227. @ <#772#>
  228.  
  229. <P>
  230. @@@<#809#><tex2html_comment_mark>55
  231. @<#107#>@;SPMquot;<#107#><tex2html_comment_mark>56
  232. @<#108#>@@ 0;SPMquot;<#108#><tex2html_comment_mark>57
  233.  @;SPMlt;@
  234.   @@<#773#>@<#658#>@=@
  235.    <#658#>@=@ <#773#><tex2html_comment_mark>59
  236.  
  237.   @@<#774#>@<#659#>@=@
  238.    <#659#>@=@ <#774#><tex2html_comment_mark>60
  239. @@i <#809#>
  240. )
  241.  
  242. <P>
  243. Currently any tokens remaining before the opening brace are
  244. discarded, with an accompanying message.
  245.  
  246. <P>
  247. (
  248. @@@i#1#<#660#>
  249.  @<#113#>#1<#113#>@ 
  250.  @<#114#>discarding unused tokens: #1<#114#>@@ <#660#>
  251. )
  252.  
  253. <P>
  254. Next it is time to analyse the braced information,
  255. e.g. to set switches and/or adjust the scale.
  256. If this information is empty |<#115#><#115#>| then the default
  257. values are used.
  258.  
  259. <P>
  260. (
  261. @@@#1<#661#>@
  262.  @<#116#>#1<#116#>@ @<#117#>@@@<#117#><tex2html_comment_mark>62
  263. @<#118#>@@#1~!<#118#>@ <#661#>
  264.  
  265. <P>
  266. @@<#775#>@ 
  267.  @ 
  268.  <#775#>
  269. )
  270.  
  271. <P>
  272.